﻿using Bot.Domain.BotImport;
using System;
using System.Xml.Serialization;

public interface IMustHaveGuid
{
    string Guid { get; set; }
}

public class BotImportDataEx: IMustHaveGuid
{
    public string Guid { get; set; }
    /// <remarks/>
    public BotTypeEx Bot { get; set; }
}
public class BotTypeEx : BotType,IMustHaveGuid
{
    public string Guid { get; set; }
    public Guid Id { get; set; }
    public int SiteId { get; set; }
    public string BotEngineAppId { get; set; }
    public AnswerTypeEx[] GreetingMessage { get; set; }
    public BotCategoryTypeEx[] Category { get; set; }
    public BotEntityTypeEx[] Entity { get; set; }
    public BotSmartTriggerTypeEx[] SmartTriggers { get; set; }
    public BotQuickReplyTypeEx[] QuickReplys { get; set; }
    public UnrecognizedMessageTypeEx[] NoAnswerMessages { get; set; }
    public UnrecognizedMessageTypeEx[] PossibleAnswerMessages { get; set; }
}
public class BotCategoryTypeEx : BotCategoryType, IMustHaveGuid
{
    public string Guid { get; set; }
    public Guid Id { get; set; }
    public int SiteId { get; set; }
    public Guid BotId { get; set; }
    public Guid ParentId { get; set; }
    public int Level { get; set; }
    public BotIntentTypeEx[] Intent { get; set; }
}
public class BotIntentTypeEx : BotIntentType, IMustHaveGuid
{
    public string Guid { get; set; }
    public Guid Id { get; set; }
    public int SiteId { get; set; }
    public Guid BotId { get; set; }
    public Guid CategoryId { get; set; }
    public string MappingToBotEngine { get; set; }
    public string ResponseText { get; set; }
    public BotIntentQuestionTypeEx[] Question { get; set; }
    public BotAnswerSignInSettingTypeEx[] AnswerSignInSettings { get; set; }
    public BotEntityCollectionFormFieldTypeEx[] EntityCollectionFormFields { get; set; }
    public BotIntentAnswerTypeEx[] IntentAnswers { get; set; }
    public BotEntityCollectionPromptTypeEx[] EntityCollectionPrompts { get; set; }
}
public class BotIntentQuestionTypeEx: BotIntentQuestionType, IMustHaveGuid
{
    public string Guid { get; set; }
    public Guid Id { get; set; }
    public int SiteId { get; set; }
    public Guid IntentId { get; set; }
    public string IdInBotEngine { get; set; }
    public BotIntentQuestionEntityTypeEx[] QuestionEntity { get; set; }
}
public class BotIntentQuestionEntityTypeEx : BotIntentQuestionEntityType, IMustHaveGuid
{
    public string Guid { get; set; }
    public Guid Id { get; set; }
    public int SiteId { get; set; }
    public Guid EntityId { get; set; }
    public Guid QuestionId { get; set; }
    public string QuestionContent { get; set; }
}
public class BotAnswerSignInSettingTypeEx : BotAnswerSignInSettingType, IMustHaveGuid
{
    public string Guid { get; set; }
    public Guid Id { get; set; }
    public int SiteId { get; set; }
    public Guid IntentId { get; set; }
    public Guid AnswerId { get; set; }
}
public class BotEntityCollectionFormFieldTypeEx: BotEntityCollectionFormFieldType, IMustHaveGuid
{
    public string Guid { get; set; }
    public Guid Id { get; set; }
    public int SiteId { get; set; }
    public Guid IntentId { get; set; }
    public Guid EntityId { get; set; }
    public Guid AnswerId { get; set; }
}
public class BotIntentAnswerTypeEx: BotIntentAnswerType, IMustHaveGuid
{
    public string Guid { get; set; }
    public Guid Id { get; set; }
    public int SiteId { get; set; }
    public Guid BotId { get; set; }
    public Guid IntentId { get; set; }
    public BotIntentAnswerButtonTypeEx[] IntentAnswerButtons { get; set; }
    public BotAnswerSignInSettingTypeEx[] AnswerSignInSettings { get; set; }
    public BotEntityCollectionFormFieldTypeEx[] EntityCollectionFormFields { get; set; }
    public BotEntityCollectionPromptTypeEx[] EntityCollectionPrompts { get; set; }
}
public class BotIntentAnswerButtonTypeEx: BotIntentAnswerButtonType, IMustHaveGuid
{
    public string Guid { get; set; }
    public Guid Id { get; set; }
    public Guid IntentId { get; set; }
    public Guid AnswerId { get; set; }    
}
public class AnswerTypeEx : AnswerType, IMustHaveGuid
{
    public string Guid { get; set; }
    public Guid Id { get; set; }
    public int SiteId { get; set; }
    public Guid BotId { get; set; }
    public Guid IntentId { get; set; }
    public ButtonTypeEx[] Buttons { get; set; }
}
public class ButtonTypeEx : ButtonType, IMustHaveGuid
{
    public string Guid { get; set; }
    public Guid Id { get; set; }
    public Guid IntentId { get; set; }
    public Guid AnswerId { get; set; }
}
public class BotEntityCollectionPromptTypeEx: BotEntityCollectionPromptType, IMustHaveGuid
{
    public string Guid { get; set; }
    public Guid Id { get; set; }
    public int SiteId { get; set; }
    public Guid IntentId { get; set; }
    public Guid EntityId { get; set; }
    public Guid AnswerId { get; set; }
}
public class BotEntityTypeEx: BotEntityType, IMustHaveGuid
{
    public string Guid { get; set; }
    public Guid Id { get; set; }
    public int SiteId { get; set; }
    public Guid BotId { get; set; }
    public string MappingToBotEngine { get; set; }
    public BotListEntityItemTypeEx[] EntityItem { get; set; }
}
public class BotListEntityItemTypeEx: BotListEntityItemType, IMustHaveGuid
{
    public string Guid { get; set; }
    public Guid Id { get; set; }
    public int SiteId { get; set; }
    public Guid EntityId { get; set; }
    public string MappingToBotEngine { get; set; }
}
public class BotSmartTriggerTypeEx: BotSmartTriggerType, IMustHaveGuid
{
    public string Guid { get; set; }
    public Guid Id { get; set; }
    public int SiteId { get; set; }
    public Guid BotId { get; set; }
    public BotSmartTriggerConditionTypeEx[] SmartTriggerConditions { get; set; }
    public BotSmartTriggerActionTypeEx[] SmartTriggerActions { get; set; }
}
public class BotSmartTriggerConditionTypeEx: BotSmartTriggerConditionType, IMustHaveGuid
{
    public string Guid { get; set; }
    public Guid Id { get; set; }
    public Guid SmartTriggerId { get; set; }
}
public class BotSmartTriggerActionTypeEx: BotSmartTriggerActionType, IMustHaveGuid
{
    public string Guid { get; set; }
    public Guid Id { get; set; }
    public Guid SmartTriggerId { get; set; }
}
public class BotQuickReplyTypeEx: BotQuickReplyType, IMustHaveGuid
{
    public string Guid { get; set; }
    public Guid Id { get; set; }
    public int SiteId { get; set; }
    public Guid BotId { get; set; }
    public BotQuickReplyItemTypeEx[] QuickReplyItems { get; set; }
}
public class BotQuickReplyItemTypeEx: BotQuickReplyItemType, IMustHaveGuid
{
    public string Guid { get; set; }
    public Guid Id { get; set; }
    public Guid QuickReplyId { get; set; }
    public Guid IntentId { get; set; }
}
public class UnrecognizedMessageTypeEx: UnrecognizedMessageType, IMustHaveGuid
{
    public string Guid { get; set; }
    public Guid Id { get; set; }
    public Guid BotId { get; set; }
}